Zurück im Curriculum Programmieren mit ObjektenWeiter im Curriculum Programmieren mit ObjektenImplementation einer verketteten Liste Zusammenfassung ?

Das folgende Bild illustriert das Einfügen eines Elementes in eine verkettete Liste. Das neue Element wird an eine beliebige freie Stelle in den Speicher geschrieben, ohne die bereits vorhandenen Zellen zu verschieben. Das Einbinden in die bestehende Kette geschieht durch "Umbiegen" von Verweisen.

Der Nachteil verketteter Listen gegenüber Datenfeldern ist, dass die direkte Suche und damit auch die binäre Suche nicht möglich ist. Verkettete Listen müssen sequentiell durchsucht werden. Um ein Element zu erreichen, muss man am Anfang der Kette beginnen und den Verweisen folgen.

Verkettete Strukturen lassen sich in VBA mit Hilfe von Objekten und Objektverweisen implementieren. Die Zellen der verketteten Liste im Bild werden beispielsweise als Objekte mit zwei Eigenschaften dargestellt. Die erste Eigenschaft speichert den Inhalt und die Zweite den Verweis auf den Nachfolger. Die Beschreibung der Objekte im Klassenmodul ist rekursiv, da sie sich selbst in ihre Definition einbezieht.

Klassenmodul cZelle

Public Inhalt As String         'Inhalt
Public Nachfolger As cZelle     'Verweis auf Nachfolger

Der folgende Code baut die in Bild a dargestellt Liste auf. Die Objektvariable Anfang wird auf Modulebene vereinbart, damit nach Ausführung der Prozedur Test() auf die Liste zugegriffen werden kann. Die vier Objektvariablen Zelle1 bis Zelle4 werden dagegen nur vorübergehen für den Aufbau der Liste benötigt.

Standardmodul Prozeduren

Private Anfang As cZelle

Private Sub Test()
  Dim Zelle1 As cZelle          'für Element anna
  Dim Zelle2 As cZelle          'für Element beat
  Dim Zelle3 As cZelle          'für Element clara
  Dim Zelle4 As cZelle          'für Element david

  '--- Erstelle die Elemente der verketteten Liste
  Set Zelle1 = New cZelle
  Zelle1.Inhalt = "anna"
  Set Zelle2 = New cZelle
  Zelle2.Inhalt = "beat"
  Set Zelle3 = New cZelle
  Zelle3.Inhalt = "clara"
  Set Zelle4 = New cZelle
  Zelle4.Inhalt = "david"

  '--- Verkette die Elemente
  Set Anfang = Zelle1
  Set Zelle1.Nachfolger = Zelle2
  Set Zelle2.Nachfolger = Zelle3
  Set Zelle3.Nachfolger = Zelle4
End Sub

Aufgabe verkettete Liste

©abo